/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import models.Login;
import models.Pessoa;

/**
 *
 * /**
 *
 * @author Maria Sophia
 */
public class PessoaJDBC implements PessoaDAO {

    @Override
    public void inserir(Pessoa p) throws DAOException {

        try {
            try (Connection conn = FabricaConexao.getConnection()) {
                Statement st = conn.createStatement();
                String sql = "insert into cliente (nome,cpf,rg,endereco,cidade,uf,professor,bibliotecario)"
                        + " values ('" + p.getNome() + "','" + p.getCpf() + "','" + p.getRg() + "','"
                        + p.getEnd() + "','" + p.getCidade() + "','" + p.getUf() + "','" + p.getProfessor() + "','" + p.getBibliotecario() + "');";

                st.executeUpdate(sql);
            }
        } catch (ErroConexao | SQLException ex) {
            throw new DAOException(ex);
        }
        JOptionPane.showMessageDialog(null, "Adicionado com sucesso");

    }

    @Override
    public void remover(Pessoa p) throws DAOException {
        Connection conn;
        try {
            conn = FabricaConexao.getConnection();
            Statement st = conn.createStatement();
            String sql = "delete from cliente where cod='" + p.getCod() + "';";
            st.executeUpdate(sql);
            conn.close();
            JOptionPane.showMessageDialog(null, "Removido com sucesso");
        } catch (ErroConexao | SQLException ex) {
            throw new DAOException(ex);
        }
    }

    @Override
    public void localizar(Pessoa p) throws DAOException {
        Connection conn;
        Pessoa pessoa;
        try {
            conn = FabricaConexao.getConnection();
            Statement st = conn.createStatement();
            String sql = "select * from cliente where cod='" + p.getCod() + "';";
            ResultSet rs = st.executeQuery(sql);
            if (rs.next()) {
                pessoa = new Pessoa();
                pessoa.setNome(rs.getString(3));
                pessoa.setCpf(Integer.parseInt(rs.getString(4)));
                pessoa.setRg(Integer.parseInt(rs.getString(5)));
                pessoa.setEnd(rs.getString(6));
                pessoa.setCidade(rs.getString(7));
                pessoa.setUf(rs.getString(8));

            }
            conn.close();
        } catch (ErroConexao | SQLException ex) {
            throw new DAOException(ex);
        }

    }

    @Override
    public Pessoa listar(Pessoa p) throws DAOException {
        Connection conn;
        Pessoa p1[] = new Pessoa[0];
        try {
            conn = FabricaConexao.getConnection();
            Statement st = conn.createStatement();
            String sql = "select * from cliente";
            ResultSet rs = st.executeQuery(sql);
            int i = 0;
            while (rs.next()) {
                i = i + 1;
                Pessoa p2[] = new Pessoa[p1.length];
                for (int j = 0; j < p1.length; j++) {
                    p2[j] = p1[j];
                }
                p1 = new Pessoa[i];
                for (int j = 0; j < p2.length; j++) {
                    p1[j] = p2[j];
                }
                Pessoa pessoa = new Pessoa();
                pessoa.setCod(rs.getInt("cod"));

                p1[i - 1] = pessoa;
            }
            conn.close();
        } catch (ErroConexao | SQLException ex) {
            throw new DAOException(ex);
        }
        return p;

    }
}
